- Published on
Nestjs 공식문서 부수기 [4]
NestJS의 공식문서를 보며 직접 따라해보고 배워보도록 하겠습니다. (NestJS, n.d.)
Providers
Providers의 주요 아이디어 는 종속성 으로 주입 될 수 있다는 것입니다 . 즉, 개체는 서로 다양한 관계를 생성할 수 있으며 개체의 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임될 수 있습니다.
컨트롤러는 HTTP 요청을 처리하고 더 복잡한 작업을 Providers에게 위임해야 합니다 . 공급자는 모듈providers
에서와 같이 선언된 일반 JavaScript 클래스입니다 .
힌트 Nest를 사용하면 종속성을 보다 OO 방식으로 설계하고 구성할 수 있으므로 SOLID 원칙 을 따르는 것이 좋습니다 .
서비스
서비스는 데이터 저장 및 검색을 담당하며 에서 사용하도록 설계되었습니다.
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
힌트 CLI를 사용하여 서비스를 생성하려면
nest g service cats
명령을 실행하기만 하면 됩니다.
@Injectable()
는 Nest IoC 컨테이너에서 관리할 수 있는 클래스임을 선언하고 메타데이터를 첨부합니다 .
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';
@Controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
private
구문 의 사용에 유의하십시오.이 구문을 사용 하면 동일한 위치에서 즉시 멤버를 선언하고 초기화할 수 있습니다.
의존성 주입
Nest는 일반적으로 종속성 주입 디자인 패턴을 기반으로 구축되었습니다 . 공식 Angular 문서 에서 이 개념에 대한 훌륭한 기사를 읽는 것이 좋습니다.
공식 Angular문서에서 이 개념에 대한 글을 읽을 수 있습니다.
Providers 등록
이전 글의 controller과 같이 모듈에 서비스를 추가 합니다.
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class AppModule {}
Nest는 이제 클래스 의 종속성을 해결할 수 있습니다.